/*
    SUSAN® - Sole of Unix Save ANything

   
      Copyright (C) 2011-2016 Skyatlas Co. LTD

   

   

   

   
*/
/* originally Kern Sibbald, October 2007 */

#if defined(HAVE_MINGW)
#include "include/susan.h"
#include "gtest/gtest.h"
#else
#include "gtest/gtest.h"
#include "include/susan.h"
#endif


#include "stored/stored.h"
#include "stored/stored_globals.h"
#include "stored/sd_plugins.h"
#include "lib/crypto_cache.h"
#include "stored/sd_stats.h"
#include "lib/edit.h"
#include "include/jcr.h"

namespace storagedaemon {

TEST(sd, sd_plugins)
{
  char plugin_dir[1000];
  JobControlRecord mjcr1, mjcr2;
  JobControlRecord* jcr1 = &mjcr1;
  JobControlRecord* jcr2 = &mjcr2;

  InitMsg(NULL, NULL);

  OSDependentInit();

  (void)!getcwd(plugin_dir, sizeof(plugin_dir) - 1);

  LoadSdPlugins(plugin_dir, NULL);

  jcr1->JobId = 111;
  NewPlugins(jcr1);

  jcr2->JobId = 222;
  NewPlugins(jcr2);

  EXPECT_EQ(GeneratePluginEvent(jcr1, bSdEventJobStart, (void*)"Start Job 1"),
            bRC_OK);
  EXPECT_EQ(GeneratePluginEvent(jcr1, bSdEventJobEnd), bRC_OK);
  EXPECT_EQ(GeneratePluginEvent(jcr2, bSdEventJobStart, (void*)"Start Job 1"),
            bRC_OK);
  FreePlugins(jcr1);
  EXPECT_EQ(GeneratePluginEvent(jcr2, bSdEventJobEnd), bRC_OK);
  FreePlugins(jcr2);

  UnloadSdPlugins();

  TermMsg();
  CloseMemoryPool();
}

} /* namespace storagedaemon */
